package com.xinqi.common.core.enums;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.annotation.JsonValue;
import com.xinqi.common.base.enums.BaseEnum;
import lombok.Getter;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 新奇提醒 -- 消息类型
 *
 * @Author：yyzhen
 * @Package：com.xinqi.common.core.enums
 * @Project：xingqiclass-cloud-plus
 * @name：ComplaintTypeEnum
 * @Date：2023/4/24 10:34
 * @Filename：ComplaintTypeEnum
 */
public enum ChatRemindTypeEnum implements BaseEnum {

    /**
     * 评论
     */
    COMMENT("comment", "评论"),

    /**
     * 回复
     */
    REPLY("reply", "回复"),

    /**
     * 点赞
     */
    GIVE("give", "点赞"),

    /**
     * 提问
     */
    QUESTION("question", "评论"),

    /**
     * 提问-回复
     */
    QUESTION_REPLY("question_reply", "回复"),

    /**
     * 提问-点赞
     */
    QUESTION_GIVE("question_give", "点赞"),

    /**
     * 成员入课
     */
    JOIN_CLASS("join_class", "成员入课"),

    /**
     * 审核拒绝
     */
    AUDIT_REJECT("audit_reject", "审核拒绝"),

    /**
     * 审核通过
     */
    AUDIT_PASS("audit_pass", "审核通过"),

    /**
     * 自动审核
     */
    AUTO_AUDIT("auto_audit", "自动审核"),

    /**
     * 成员退出
     */
    DROP_CLASS("drop_class", "成员退出"),

    /**
     * 身份变更
     */
    IDENTITY_CHANGE("identity_change", "身份变更"),

    /**
     * 小组变动
     */
    GROUP_CHANGE("group_change", "小组变动"),

    /**
     * 用户反馈
     */
    USER_FEEDBACK("user_feedback", "用户反馈"),

    /**
     * 用户投诉
     */
    USER_COMPLAINTS("user_complaints", "用户投诉"),

    /**
     * 首次进入
     */
    FIRST_ENTRY("first_entry", "首次进入"),

    /**
     * 消息提醒
     */
    MESSAGE_REMINDER("message_reminder", "消息提醒");

    @Getter(onMethod_ = {@JsonValue})
    private final String code;

    @Getter
    private final String describe;

    ChatRemindTypeEnum(String code, String describe) {
        this.code = code;
        this.describe = describe;
    }

    @JsonCreator
    public static ChatRemindTypeEnum of(String code) {
        return BaseEnum.of(ChatRemindTypeEnum.class, code);
    }

    public static List<Map<String, String>> getSelectList() {
        List<Map<String, String>> list = new ArrayList<>();
        for (ChatRemindTypeEnum typeEnum : ChatRemindTypeEnum.values()) {
            Map<String, String> map = new HashMap<>();
            map.put("code", typeEnum.getCode());
            map.put("describe", typeEnum.getDescribe());
            list.add(map);
        }
        return list;
    }
}
